package Daos;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Vector;
import dtos.DTOAccionPermitida;
import enums.TipoAccion;
import excepciones.PersistenciaException;
import logica.objetos.Barco;
import logica.objetos.Barreminas;
import logica.objetos.Carguero;
import logica.objetos.Minador;

/**
 * clase que se ocupa de la persistencia de las acciones permitidas a cada elemento
 * @author GRUPODOS  
 *
 */
public class AccionesPermitidas {
/**
 * metodo que busca las acciones permitidas para cada barco
 * @param t la transaccion
 * @param b el barco
 * @return un array de DTO con la lista de acciones permitidas en el barco ingresado
 * @throws PersistenciaException si ocurre error SQL
 */
	public DTOAccionPermitida[] listaAccionesPorBarco(Connection t, Barco b) 
	throws PersistenciaException
	{
		DTOAccionPermitida[] resu = null;
		Vector<DTOAccionPermitida> interno = new Vector<DTOAccionPermitida>();
		try{	
		int tipo = 0;
		if(b instanceof Barreminas)
		 {
			tipo = 1;
		 }
		 else if(b instanceof Carguero)
		 {
			 tipo = 0;
		 }
		 else if(b instanceof Minador)
		 {
			 tipo = 2;
		 }		
		ConsultasSQL consultas = new ConsultasSQL();
		String sql = consultas.listarAccionesPermitidas();
		PreparedStatement ps = t.prepareStatement(sql);
		ps.setInt(1, tipo);
		ResultSet rs = ps.executeQuery();
		while(rs.next())
		{
			int id = rs.getInt(1);
			String descripcion = rs.getString(2);
			int costo = rs.getInt(3);
					
			DTOAccionPermitida accion = new DTOAccionPermitida(descripcion, costo, id);
		    interno.add(accion);
		}		
		ps.close();
		rs.close();
		}
		catch(SQLException e)
		{
			throw new PersistenciaException(e.getMessage());
		}	
		resu = new DTOAccionPermitida[interno.size()];
		int i = 0;
		for(DTOAccionPermitida a : interno)
		{
			resu[i]=a;
			i++;
		}
		
		return resu;
	}

}
